#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>
#include<assert.h>
//char* my_strcpy(char* arr1, const char* arr2) {
//	assert(arr1 != NULL);
//	assert(arr2 != NULL);
//	char* str = arr1;
//	while (*arr1++=*arr2++) {
//		
//	}
//	return str;
//}
//int main() {
//	char arr[] = "abcdef";
//	char arr1[20]="************";
//	printf("%s", my_strcpy(arr1, arr));
//	return 0;
//}
//size_t my_strlen(const char* arr) {
//	assert(arr);
//	size_t num = 0;
//	while (*arr++) {
//		num++;
//	}
//	return num;
//}
//int main() {
//	char arr[] = "abcdefghigklmn";
//	size_t ret = my_strlen(arr);
//	printf("%d", ret);
//	return 0;
//}

int main() {
	int m = 0;
	int n = 0;
	scanf("%d %d", &m, &n);
	int arr1[20] = { 0 };
	int arr2[20] = { 0 };
	for (int i = 0; i < m; i++) {
		scanf("%d", &arr1[i]);
	}
	for (int j = 0; j < n; j++) {
		scanf("%d", &arr2[j]);
	}
	int arr3[40] = { 0 };
	int i = 0;
	int j = 0;
	int k = 0;
	while (i < m && j < n) {
		if (arr1[i] < arr2[j]) {
			arr3[k] = arr1[i];
			i++;
			k++;
		}
		else {
			arr3[k] = arr2[j];
			j++;
			k++;
		}
	}
	if (i == m)
		while (j < n) {
			arr3[k] = arr2[j];
			k++;
			j++;
		}
	else
		while (i < m) {
			arr3[k] = arr1[i];
			i++;
			k++;
		}
	for (int i = 0; i < m + n; i++) {
		printf("%d ", arr3[i]);
	}
	return 0;
}